\documentclass[12pt]{amsart}
\usepackage{geometry}
\geometry{a4paper}
\usepackage{graphicx}
\usepackage{amssymb}
\usepackage{epstopdf}

\DeclareGraphicsRule{.tif}{png}{.png}{`convert #1 `dirname #1`/`basename #1 .tif`.png}

\title{AI in Project Gaming}
\author{Niels van Galen Last \& Erik Kok}
\date{}

\begin{document}
\maketitle
\section{Inleiding}
Dit document beschrijft de Artificial Intelligence (AI) technieken die wij gebruiken ter afronding van het vak AI Practicum. Wij hebben gekozen voor de AI algoritmes in ons spel genaamd Monkey Invaders, voor het project Gaming, te implementeren. De algoritmes die we gaan implementeren zijn Flocking, voor het gedrag van verschillende entiteiten, en A* als pathfinding algoritme.

\section{Flocking}{}{}
Flocking is een AI algoritme om groep gedrag te simuleren, zoals een school vissen, of een zwerm vogels. Door drie simpele regels:
\begin{itemize}
\item[] Separation: avoid crowding neighbours
\item[] Alignment: steer towards average heading of neighbours
\item[] Cohesion: steer towards average position of neighbours
\end{itemize}

Monkey Invaders bestaat uit twee delen. Een deel van het spel is een shooter waarin groepen apen het scherm binnen komen en daarna beginnen met de aanval. Deze groepen gaan door middel van flocking bij elkaar gehouden worden, zodat ze ook in groepsverband aanvallen. Zo kun je verschillende bepaalde groepen ook groter maken in moeilijkere levels. 

De eigen vloot kan ook met behulp van flocking bestuurd worden. Een mogelijke extra feature in het spel zal zijn de besturing van meerdere schepen te gelijk, wat kan zorgen voor meer schietkracht. Deze vloot zal ook het gedrag van flocking vertonen. 

\section{Path finding with A*}
A* is een zoek algoritme om van een bepaalde start node tot een goal node te komen. Het A* algoritme is een vorm van het best-first zoek algoritme. Het evalueert telkens het de nodes door de kosten van het bereiken van de node ($g(n)$) op te tellen bij de kosten om de goal node te bereiken ($h(n)$). Dit gaat met de functie \[f(n) = g(n) + h(n)\] waarbij $f(n)$ de geschatte kosten zijn van het kortste pad door node $n$. A* is optimaal als $h(n)$ nooit overschat.

A* bepaalt dus de optimale route tussen twee nodes. Zoals hierboven vermeld heeft de speler bij het spelen van Monkey Invaders te maken met vijanden die in het spel vliegen door de speelruimte. In deze speelruimte bevinden zich obstakels waar omheen gevlogen dient te worden om botsingen te voorkomen. Om het spel moeilijk te maken kiezen wij er niet voor om de vijanden willekeurig te laten vliegen maar om ze doelgericht op de speler af te laten gaan. Om de paden te vinden die ze moeten vliegen om alle obstakels heen en gericht op de speler gebruiken wij het A* algoritme.



\end{document}  